package cursopoo

class IntervaloConSaltos {
    def inicio
    def fin
    def salto

    IntervaloConSaltos(inicio, fin, salto) {
        this.inicio = inicio
        this.fin = fin
        this.salto = salto
    }

   def describir() {
        return "[$inicio, $fin) cada $salto"
    }

    def size() {
        def n = 0
        recorrer({ n++ })
        return n
    }

    def pertenece(n) {
        def encontrado = false
        recorrer({ encontrado = encontrado || (n == it) })
        return encontrado
    }

    def contiene(n) {
        inicio >= n && fin < n
    }

    def recorrer(f) {
        for (def i = inicio; i < fin; i += salto) {
            f(i)
        }
    }
}
